<!DOCTYPE html>
<html>
<head>
    

    

    



    <meta charset="utf-8">
    
    
    
    
    <title>高斯混合模型GMM聚类的步骤和推导 | ATOM 阿瞳目 | 欲穷千里目，更上一层楼</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    
    <meta name="theme-color" content="#3F51B5">
    
    
    <meta name="keywords" content="机器学习,大数据,数据分析,聚类">
    <meta name="description" content="0. 引言&amp;emsp;&amp;emsp;由于最近要做聚类算法方面的内容，看了很多资料，在高斯混合模型(GMM)这里一直没有一个让我完全推导清楚的、理解的文章。经过三天打鱼两天晒网 不懈努力，总算是有一点自己的理解，我希望尽量通俗地把GMM讲明白，同时也希望尽量详细地对公式进行推导和解释。因此，我会先给出GMM算法的总体步骤，保证拿上先可以直接使用，然后再进行具体的推导和解释。文中可能有一些自己理解不严谨">
<meta property="og:type" content="article">
<meta property="og:title" content="高斯混合模型GMM聚类的步骤和推导">
<meta property="og:url" content="https://richardyann.gitee.io/2020/03/20/%E9%AB%98%E6%96%AF%E6%B7%B7%E5%90%88%E6%A8%A1%E5%9E%8BGMM%E8%81%9A%E7%B1%BB%E7%9A%84%E6%AD%A5%E9%AA%A4%E5%92%8C%E6%8E%A8%E5%AF%BC/index.html">
<meta property="og:site_name" content="ATOM 阿瞳目">
<meta property="og:description" content="0. 引言&amp;emsp;&amp;emsp;由于最近要做聚类算法方面的内容，看了很多资料，在高斯混合模型(GMM)这里一直没有一个让我完全推导清楚的、理解的文章。经过三天打鱼两天晒网 不懈努力，总算是有一点自己的理解，我希望尽量通俗地把GMM讲明白，同时也希望尽量详细地对公式进行推导和解释。因此，我会先给出GMM算法的总体步骤，保证拿上先可以直接使用，然后再进行具体的推导和解释。文中可能有一些自己理解不严谨">
<meta property="og:locale" content="zh_CN">
<meta property="article:published_time" content="2020-03-20T07:18:57.000Z">
<meta property="article:modified_time" content="2020-05-28T03:15:15.492Z">
<meta property="article:author" content="Richard Yann">
<meta property="article:tag" content="机器学习">
<meta property="article:tag" content="大数据">
<meta property="article:tag" content="数据分析">
<meta property="article:tag" content="聚类">
<meta name="twitter:card" content="summary">
    
        <link rel="alternate" type="application/atom+xml" title="ATOM 阿瞳目" href="/atom.xml">
    
    <link rel="shortcut icon" href="/favicon.ico">
    <link rel="stylesheet" href="/css/style.css?v=1.7.2">
    <script>window.lazyScripts=[]</script>

	<link rel="stylesheet" href="/css/_partial/prism.css?v=1.7.2">
	
    <!-- custom head -->
    

<meta name="generator" content="Hexo 4.2.1"></head>

<body>
    <div id="loading" class="active"></div>

    <aside id="menu" class="hide" >
  <div class="inner flex-row-vertical">
    <a href="javascript:;" class="header-icon waves-effect waves-circle waves-light" id="menu-off">
        <i class="icon icon-lg icon-close"></i>
    </a>
    <div class="brand-wrap" style="background-image:url(/img/brand.jpg)">
      <div class="brand">
        <a href="/" class="avatar waves-effect waves-circle waves-light">
          <img src="/img/avatar.jpg">
        </a>
        <hgroup class="introduce">
          <h5 class="nickname">Richard Yann</h5>
          <a href="mailto:yanrichard500@gmail.com" title="yanrichard500@gmail.com" class="mail">yanrichard500@gmail.com</a>
        </hgroup>
      </div>
    </div>
    <div class="scroll-wrap flex-col">
      <ul class="nav">
        
            <li class="waves-block waves-effect">
              <a href="/"  >
                <i class="icon icon-lg icon-home"></i>
                主页
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="/archives"  >
                <i class="icon icon-lg icon-archives"></i>
                归档
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="/tags"  >
                <i class="icon icon-lg icon-tags"></i>
                标签
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="/categories"  >
                <i class="icon icon-lg icon-th-list"></i>
                分类
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="https://blog.csdn.net/weixin_42062018" target="_blank" rel="noopener"  >
                <i class="icon icon-lg icon-link"></i>
                CSDN
              </a>
            </li>
        
            <li class="waves-block waves-effect">
              <a href="https://github.com/RichardYann" target="_blank" >
                <i class="icon icon-lg icon-github"></i>
                Github
              </a>
            </li>
        
      </ul>
    </div>
  </div>
</aside>

    <main id="main">
        <header class="top-header" id="header">
    <div class="flex-row">
        <a href="javascript:;" class="header-icon waves-effect waves-circle waves-light on" id="menu-toggle">
          <i class="icon icon-lg icon-navicon"></i>
        </a>
        <div class="flex-col header-title ellipsis">高斯混合模型GMM聚类的步骤和推导</div>
        
        <div class="search-wrap" id="search-wrap">
            <a href="javascript:;" class="header-icon waves-effect waves-circle waves-light" id="back">
                <i class="icon icon-lg icon-chevron-left"></i>
            </a>
            <input type="text" id="key" class="search-input" autocomplete="off" placeholder="输入感兴趣的关键字">
            <a href="javascript:;" class="header-icon waves-effect waves-circle waves-light" id="search">
                <i class="icon icon-lg icon-search"></i>
            </a>
        </div>
        
        
        <a href="javascript:;" class="header-icon waves-effect waves-circle waves-light" id="menuShare">
            <i class="icon icon-lg icon-share-alt"></i>
        </a>
        
    </div>
</header>
<header class="content-header post-header">

    <div class="container fade-scale">
        <h1 class="title">高斯混合模型GMM聚类的步骤和推导</h1>
        <h5 class="subtitle">
            
                <time datetime="2020-03-20T07:18:57.000Z" itemprop="datePublished" class="page-time">
  2020-03-20
</time>


	<ul class="article-category-list"><li class="article-category-list-item"><a class="article-category-list-link" href="/categories/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/">机器学习</a></li></ul>

            
        </h5>
    </div>

    


</header>


<div class="container body-wrap">
    
    <aside class="post-widget">
        <nav class="post-toc-wrap post-toc-shrink" id="post-toc">
            <h4>TOC</h4>
            <ol class="post-toc"><li class="post-toc-item post-toc-level-4"><a class="post-toc-link" href="#0-引言"><span class="post-toc-text">0. 引言</span></a></li><li class="post-toc-item post-toc-level-4"><a class="post-toc-link" href="#1-算法初窥"><span class="post-toc-text">1. 算法初窥</span></a></li><li class="post-toc-item post-toc-level-4"><a class="post-toc-link" href="#2-高斯混合模型的引入"><span class="post-toc-text">2. 高斯混合模型的引入</span></a></li><li class="post-toc-item post-toc-level-4"><a class="post-toc-link" href="#3-按照高斯混合模型进行聚类划分"><span class="post-toc-text">3. 按照高斯混合模型进行聚类划分</span></a></li><li class="post-toc-item post-toc-level-4"><a class="post-toc-link" href="#4-确定高斯混合模型参数"><span class="post-toc-text">4. 确定高斯混合模型参数</span></a><ol class="post-toc-child"><li class="post-toc-item post-toc-level-5"><a class="post-toc-link" href="#①-pmb-mu"><span class="post-toc-text">① $\pmb{\mu}:$</span></a></li><li class="post-toc-item post-toc-level-5"><a class="post-toc-link" href="#②-pmb-Sigma"><span class="post-toc-text">② $\pmb{\Sigma}:$</span></a></li><li class="post-toc-item post-toc-level-5"><a class="post-toc-link" href="#③-alpha"><span class="post-toc-text">③ $\alpha:$</span></a></li></ol></li><li class="post-toc-item post-toc-level-4"><a class="post-toc-link" href="#参考资料"><span class="post-toc-text">参考资料</span></a></li></ol>
        </nav>
    </aside>


<article id="post-高斯混合模型GMM聚类的步骤和推导"
  class="post-article article-type-post fade" itemprop="blogPost">

    <div class="post-card">
        <h1 class="post-card-title">高斯混合模型GMM聚类的步骤和推导</h1>
        <div class="post-meta">
            <time class="post-time" title="2020-03-20 15:18:57" datetime="2020-03-20T07:18:57.000Z"  itemprop="datePublished">2020-03-20</time>

            
	<ul class="article-category-list"><li class="article-category-list-item"><a class="article-category-list-link" href="/categories/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/">机器学习</a></li></ul>



            

        </div>
        <div class="post-content" id="post-content" itemprop="postContent">
            <h4 id="0-引言"><a href="#0-引言" class="headerlink" title="0. 引言"></a>0. 引言</h4><p>&emsp;&emsp;由于最近要做聚类算法方面的内容，看了很多资料，在高斯混合模型(GMM)这里一直没有一个让我完全推导清楚的、理解的文章。经过<del>三天打鱼两天晒网</del> 不懈努力，总算是有一点自己的理解，我希望尽量通俗地把GMM讲明白，同时也希望尽量详细地对公式进行推导和解释。因此，我会先给出GMM算法的总体步骤，保证拿上先可以直接使用，然后再进行具体的推导和解释。文中可能有一些自己理解不严谨的地方，还请大家指正。</p>
<p><span id="jump1"></span></p>
<h4 id="1-算法初窥"><a href="#1-算法初窥" class="headerlink" title="1. 算法初窥"></a>1. 算法初窥</h4><blockquote>
<p>&emsp;&emsp;已知样本集是$D={x_1,x_2,…,x_m}$，要将这些样本聚成 $k$ 类。我们认为样本服从混合高斯分布：<br>$$p_M(\pmb{x})=\sum_{i=1}^k \alpha_i \cdot p(\pmb{x}|\pmb{\mu_i}, \pmb{\Sigma_i})$$<br>&emsp;&emsp;其中$p(\pmb{x}|\pmb{\mu_i}, \pmb{\Sigma_i})=\frac{1}{(2\pi)^{\frac{n}{2}}|\pmb{\Sigma_i}|^{\frac{1}{2}}}exp{-\frac{1}{2}(\pmb{x}-\pmb{\mu_i})^T\pmb{\Sigma_i}^{-1}(\pmb{x}-\pmb{\mu_i})}$是一个多元高斯分布，即一个混合成分；<br>&emsp;&emsp;$\alpha_i$表示混合系数，即选择第 $i$ 个混合成分的概率。</p>
</blockquote>
<p><strong>第一步</strong> 初始化高斯混合分布的模型参数 $\alpha_i,\pmb{\mu_i},\pmb{\Sigma_i}$<br><strong>第二步</strong> 计算$x_j$由各混合成分生成的后验概率，即观测数据$x_j$由第 $i$ 个分模型生成的概率$p(z_j=i|\pmb{x_j})$，并记为$\gamma_{ji}$<br>&emsp;&emsp;&emsp;&emsp;$\gamma_{ji}=\frac{\alpha_i\cdot p(\pmb{x_j}|\pmb{\mu_i},\pmb{\Sigma_i})}{\sum_{l=1}^{k}\alpha_l \cdot p(\pmb{x_j}|\pmb{\mu_l},\pmb{\Sigma_l})}$<br><strong>第三步</strong> 计算新的模型参数：<br>&emsp;&emsp;&emsp;&emsp;$\pmb{\mu_i’}=\frac{\Sigma_{j=1}^m\gamma_{ji}\pmb{x_j}}{\Sigma_{j=1}^m\gamma_{ji}}$<br>&emsp;&emsp;&emsp;&emsp;$\pmb{\Sigma_i’}=\frac{\Sigma_{j=1}^m\gamma_{ji}(\pmb{x_j}-\pmb{\mu_i’})(\pmb{x_j}-\pmb{\mu_i’})^T}{\Sigma_{j=1}^m\gamma_{ji}}$<br>&emsp;&emsp;&emsp;&emsp;$\alpha_i’=\frac{\Sigma_{j=1}^m\gamma_{ji}}{m}$<br><strong>第四步</strong> 按照新的模型参数重复2，3步，直到满足停止条件<br><strong>第五步</strong> 将每个样本按照$\lambda_j=\arg\max\limits_{i\in{1,2,…,k}} \gamma_{ji}$划入对应的簇。即对每个样本来自哪个分模型的概率大就划入哪个分模型的簇中，最终就得到了 $k$ 个聚类</p>
<h4 id="2-高斯混合模型的引入"><a href="#2-高斯混合模型的引入" class="headerlink" title="2. 高斯混合模型的引入"></a>2. 高斯混合模型的引入</h4><p>&emsp;&emsp;与k-means聚类不同，高斯混合聚类是采用概率模型来刻画聚类结构。实际上我们可以采用任意不同的概率分布模型来进行刻画，高斯分布是最普遍的一种，如下：<br>&emsp;&emsp;<strong>高斯分布：</strong><br>$$p(\pmb{x})=\frac{1}{(2\pi)^{\frac{n}{2}}|\pmb{\Sigma}|^{\frac{1}{2}}}exp[-\frac{1}{2}(\pmb{x}-\pmb{\mu})^T\pmb{\Sigma}^{-1}(\pmb{x}-\pmb{\mu})]$$<br>&emsp;&emsp;而单高斯分布模型有其局限性，不能完全反映数据分布的特点，因此我们用多个高斯分布的线性叠加来刻画实际样本，其中一个高斯分模型称为一个混合成分。</p>
<blockquote>
<p>理论上来说，当叠加的高斯分模型数量足够多时，可以表征任意一种分布。（这其实很好理解，类比足够多微小线段可以逼近任意一条曲线、足够多复指数信号可以描述任意信号…是一样的道理）</p>
</blockquote>
<p>&emsp;&emsp;<strong>高斯混合分布：</strong><br>$$p_M(\pmb{x})=\sum_{i=1}^k \alpha_i \cdot p(\pmb{x}|\pmb{\mu_i}, \pmb{\Sigma_i})$$<br>我们认为，手里拿到的样本就是根据这个概率分布抽取得到的（或者说“生成的”）<br>例如，对于第$j$个样本$\pmb{x_j}$，就根据 $p_M(\pmb{x_j})=\sum_{i=1}^k \alpha_{ji} \cdot p(\pmb{x_j}|\pmb{\mu_i}, \pmb{\Sigma_i})$ 得到。</p>
<blockquote>
<p><strong>$\pmb{TIPS:}$</strong></p>
<ol>
<li>这里的$p(x)$、$p_M(x)$指的是概率密度函数，不是概率，在有些概率书上为了区别，用$f(x)$表示，这里都用$p(x)$表示，但心里要清楚其含义。</li>
<li>接上条，所以$p(\pmb{x}|\pmb{\mu_i},\pmb{\Sigma_i})$不是条件概率，而是概率密度，”$|\mu_i,\Sigma_i$”只是明确一下这个概率密度函数包含的参变量。实际上它表示的就是上面单高斯分布的$p(x)$。</li>
<li>$\pmb{x}$是一条样本，但是有$n$个维度，因此是一个$n$维向量。</li>
<li>$\alpha_i&gt;0$是在生成这条样本时，选择通过第$i$个分模型来生成的概率，且$\sum_{i=1}^k\alpha_i=1$。（不能说成”样本来自第$i$个分模型的概率”，因为这里是一个先验的情况，如果这样说就成了后验了）</li>
<li>$\pmb{\mu}_i,\pmb{\Sigma}_i$是第$i$个分模型的参数。其中，$\pmb{\mu}_i$表示均值，是一个$n$维向量，$\pmb{\Sigma}_i$表示协方差矩阵，是一个$n×n$方阵。</li>
</ol>
</blockquote>
<p><span id="jump3"></span></p>
<h4 id="3-按照高斯混合模型进行聚类划分"><a href="#3-按照高斯混合模型进行聚类划分" class="headerlink" title="3. 按照高斯混合模型进行聚类划分"></a>3. 按照高斯混合模型进行聚类划分</h4><p>&emsp;&emsp;上面说了我们认为手里拿到的样本就是通过高斯混合模型抽取得到的，那么反过来我们要怎么把这些样本用高斯混合模型划分成不同的类别呢？<br>&emsp;&emsp;一个很直接的想法自然是按照模型的混合成分划成 $k$ 类，一个数据最可能从哪个分模型得来就认为属于哪一类。<br>&emsp;&emsp;在这里，我们要引入一个隐变量 $z_j\in{1,2,…,k}$ 表示得到样本 $\pmb{x_j}$的高斯分模型。</p>
<blockquote>
<p>注：</p>
<ol>
<li>有的书上用一维向量来表示，即若认为样本$\pmb{x_j}$来自第2个高斯分模型，则$z_j=[0,1,0,0,…,0]$。 这里直接用数字来表示来自第几个分模型。</li>
<li>根据$z_j$的含义很容易看出，$P(z_j=i)$表示$\pmb{x_j}$是通过第$i$个分模型生成的概率，就是高斯混合模型中的参数$\alpha_{ji}$</li>
</ol>
</blockquote>
<p>&emsp;&emsp;前面我们说了，$\alpha$是一个先验概念，是从模型到样本的过程。而现在我们在已经拿到了样本的情况下反推其来自哪个分模型，是逆向过程，因此我们用$p_M(z_j=i|\pmb{x_j})$来表示样本$\pmb{x_j}$来自第$i$个分模型的后验概率，并简记为$\gamma_{ji}$。有：<br>$$p_M(z_j=i|\pmb{x_j})=\frac{P(z_j=i)\cdot p_M(\pmb{x_j}|z_j=i)}{p_M(\pmb{x_j})} \\ =\frac{\alpha_i\cdot p(\pmb{x_j}|\pmb{\mu_i},\pmb{\Sigma_i})}{\sum_{l=1}^{k}\alpha_l \cdot p(\pmb{x_j}|\pmb{\mu_l},\pmb{\Sigma_l})}$$</p>
<blockquote>
<p>注：</p>
<ol>
<li>$p_M(\pmb{x_j}|z_j=i)$表示按照第$i$个高斯分模型生成$\pmb{x_j}$的概率密度，第$i$个高斯分模型的参数是$\pmb{\mu_i},\pmb{\Sigma_i}$，故而就等于$p(\pmb{x_j}|\pmb{\mu_i},\pmb{\Sigma_i})$</li>
<li>$p_M(\pmb{x_j})$表示综合所有的混合成分后总的概率密度</li>
<li>上述等式第一行由贝叶斯公式得到<br>&emsp;贝叶斯公式： $p(A|B)=\frac{p(A)p(B|A)}{p(B)}$</li>
</ol>
</blockquote>
<p>那么显而易见地，每个样本$\pmb{x_j}$的簇标记$\lambda_j$如下确定：<br>$$\lambda_j=\arg\max_{i \in {1,2,…,k}}\gamma_{ji}$$<br>即，$\pmb{x_j}$来自哪个分模型的概率最大，就认为属于哪一类。</p>
<h4 id="4-确定高斯混合模型参数"><a href="#4-确定高斯混合模型参数" class="headerlink" title="4. 确定高斯混合模型参数"></a>4. 确定高斯混合模型参数</h4><p>&emsp;&emsp;上面已经说了当已知高斯混合模型时，就可以进行聚类的划分，那么如何求解这个模型，得到它的三个参数呢？<br>&emsp;&emsp;我们在这里要用到的是EM算法（期望最大算法）。其实原理很简单：为什么我们能拿到手中的样本，而不是其他数据呢？我们认为这是由于选出这样一组样本的概率最大，所以才运气爆表，被我们拿到手。<br>&emsp;&emsp;由上文知，按照高斯混合模型选出一个样本$\pmb{x_j}$的概率密度<br>$$p_M(\pmb{x_j})=\sum_{i=1}^k\alpha_i \cdot p(\pmb{x_j}|\pmb{\mu_i},\pmb{\Sigma_i})$$<br>&emsp;&emsp;对于手中的$m$个样本，选到任意一个都是一个独立事件，最终的概率自然是全部相乘，即<br>$$\prod_{j=1}^mp_M(\pmb{x_j})$$<br>但是，连乘不好处理，因此一般习惯对它取对数，于是样本集$D$的最大化对数似然函数就定义如下：<br>$$LL(D)=\ln(\prod_{j=1}^mp_M(\pmb{x_j}))<br>\\ =\sum_{j=1}^m \ln(p_M(\pmb{x_j}))<br>\\ =\sum_{j=1}^m \ln(\sum_{i=1}^k \alpha_i \cdot p(\pmb{x_j}|\pmb{\mu_i},\pmb{\Sigma_i}))$$<br>&emsp;&emsp;只要能求出使$LL(D)$最大的参数就可以了。<br>&emsp;&emsp;那么怎么求满足要求的参数呢？<br>&emsp;&emsp;我们设参数$\theta_i={(\alpha_i,\mu_i,\Sigma_i)}$能使$LL(D)$最大化，那么$LL(D)$对每个参数的偏导数应该为0，但是偏导数为0求出的参数有可能只是局部最优解（$LL(D)$取极大值或驻点），而不是全局最优解（$LL(D)$取最大值）。<br>&emsp;&emsp;经过后面的推导，我们可以发现求出的每个参数，都可以用$\gamma_{ji}$表示。所以，我们在求出了一组模型参数后，按照这种模型得到对应的$\gamma_{ji}$，再用得到的$\gamma_{ji}$继续按照偏导数为0的方式求出新的参数。如此循环迭代，直到我们认为足够为止。</p>
<blockquote>
<p>至于为什么每次迭代都可以使求得的参数更优，这个问题就不在本文展开叙述了，具体可以参考EM算法的相关资料。有时间我会专门写一篇关于EM算法的文章。</p>
</blockquote>
<p>&emsp;&emsp;<strong>现在我们来具体求解每个参数：</strong></p>
<h5 id="①-pmb-mu"><a href="#①-pmb-mu" class="headerlink" title="① $\pmb{\mu}:$"></a>① $\pmb{\mu}:$</h5><p>$$\frac{\partial LL(D)}{\partial \pmb{\mu_i}}=0<br>\\  → \frac{\partial}{\partial \pmb{\mu_i}}\sum_{j=1}^m \ln (\sum_{i=1}^k \alpha_i \cdot p(\pmb{x_j}|\pmb{\mu_i},\pmb{\Sigma_i}))=0<br>\\  → \sum_{j=1}^m\frac{1}{\sum_{l=1}^k \alpha_l \cdot p(\pmb{x_j}|\pmb{\mu_l},\pmb{\Sigma_l})} \cdot \frac{\partial}{\partial \pmb{\mu_i}}[\sum_{l=1}^k\alpha_l \cdot p(\pmb{x_j}|\pmb{\mu_l},\pmb{\Sigma_l})]=0$$<br>&emsp;&emsp;(这里因为对$\pmb{\mu_i}$求偏导，为了避免混淆，将求和变量写成 $l$)<br>&emsp;&emsp;对$\frac{\partial}{\partial \pmb{\mu_i}}[\sum_{l=1}^k\alpha_l \cdot p(\pmb{x_j}|\pmb{\mu_l},\pmb{\Sigma_l})]$来说，只有当 $l=i$时，包含$\mu_i$的内容，其余对$\mu_i$求偏导均为0，可以舍去，则继续推导如下：<br>$$→ \sum_{j=1}^m\frac{1}{\sum_{l=1}^k \alpha_l \cdot p(\pmb{x_j}|\pmb{\mu_l},\pmb{\Sigma_l})} \cdot \frac{\partial}{\partial \pmb{\mu_i}}[ \alpha_i \cdot p(\pmb{x_j}|\pmb{\mu_i},\pmb{\Sigma_i})]=0$$<br>&emsp;&emsp;其中，<br>$$\frac{\partial}{\partial \pmb{\mu_i}}[ \alpha_i \cdot p(\pmb{x_j}|\pmb{\mu_i},\pmb{\Sigma_i})]<br>\\ =\frac{\partial}{\partial \pmb{\mu_i}}{\alpha_i\frac{1}{(2\pi)^{\frac{n}{2}}|\pmb{\Sigma_i}|} \exp[-\frac{1}{2}(\pmb{x_j}-\pmb{\mu_i})^T\pmb{\Sigma_i}^{-1}(\pmb{x_j}-\pmb{\mu_i})]}<br>\\ =\alpha_i\frac{\exp[-\frac{1}{2}(\pmb{x_j}-\pmb{\mu_i})^T\pmb{\Sigma_i}^{-1}(\pmb{x_j}-\pmb{\mu_i})]}{(2\pi)^{\frac{n}{2}}|\pmb{\Sigma_i}|} \frac{\partial}{\partial\pmb{\mu_i}}[-\frac{1}{2}(\pmb{x_j}-\pmb{\mu_i})^T\pmb{\Sigma_i}^{-1}(\pmb{x_j}-\pmb{\mu_i})]<br>\\ =\alpha_i\cdot p(\pmb{x_j}|\pmb{\mu_i},\pmb{\Sigma_i})\cdot(\pmb{x_j}-\pmb{\mu_i})<br>$$</p>
<blockquote>
<p>这里是向量/矩阵对另一个向量求导，不是标量求导，具体可以参考矩阵求导相关资料</p>
</blockquote>
<p>&emsp;&emsp;因此继续推导如下：<br>$$→ \sum_{j=1}^m\frac{\alpha_i \cdot p(\pmb{x_j}|\pmb{\mu_i},\pmb{\Sigma_i})}{\sum_{l=1}^k \alpha_l \cdot p(\pmb{x_j}|\pmb{\mu_l},\pmb{\Sigma_l})} (\pmb{x_j}-\pmb{\mu_i})=0<br>\\ → \sum_{j=1}^m p_M(z_j=i|\pmb{x_j})(\pmb{x_j}-\pmb{\mu_i})=0<br>\\ → \sum_{j=1}^m \gamma_{ji}\cdot (\pmb{x_j}-\pmb{\mu_i})=0<br>\\ → \sum_{j=1}^m \gamma_{ji}\pmb{x_j}=\sum_{j=1}^m\gamma_{ji}\pmb{\mu_i}<br>\\ → \pmb{\mu_i}=\frac{\sum_{j=1}^m \gamma_{ji}\pmb{x_j}}{\sum_{j=1}^m\gamma_{ji}}$$</p>
<p>&emsp;&emsp;至此，参数$\pmb{\mu_i}$迭代公式得到。</p>
<h5 id="②-pmb-Sigma"><a href="#②-pmb-Sigma" class="headerlink" title="② $\pmb{\Sigma}:$"></a>② $\pmb{\Sigma}:$</h5><p>&emsp;&emsp;同理，由<br>$$\frac{\partial LL(D)}{\partial \pmb{\Sigma_i}}=0$$<br>&emsp;&emsp;推得：<br>$$\pmb{\Sigma_i}=\frac{\sum_{j=1}^m\gamma_{ji}(\pmb{x_j}-\pmb{\mu_i})(\pmb{x_j}-\pmb{\mu_i})^T}{\sum_{j=1}^m\gamma_{ji}}$$</p>
<h5 id="③-alpha"><a href="#③-alpha" class="headerlink" title="③ $\alpha:$"></a>③ $\alpha:$</h5><p>&emsp;&emsp;求$\alpha$的过程略有不同，因为除了要使$LL(D)$最大化以外，$\alpha$还要满足它自身的条件：$\alpha_i ≥0,\sum_{i=1}^k\alpha_i=1$。<br>&emsp;&emsp;这是一个有条件的极值问题，我们要用拉格朗日乘数法来求解（具体可以参考拉格朗日乘数法求极值的相关资料）<br>&emsp;&emsp;相当于将$LL(D)$求极值问题转化为$LL(D)+\lambda(\sum_{i=1}^k\alpha_i -1)$求极值的问题，然后依然对$\alpha_i$求导为0，由此得到：<br>$$\alpha_i=\frac{1}{m}\sum_{j=1}^m\gamma_{ji}$$</p>
<p>&emsp;&emsp;至此，高斯混合模型聚类的所有参数公式均已得到，下来只要不断迭代，并按照文章<a href="#jump3">第3节</a>中的划分方式来进行聚类划分即可。</p>
<p>&emsp;&emsp;最后，可以再回头看看文章<a href="#jump1">第1节</a>的算法总结。</p>
<hr>
<h4 id="参考资料"><a href="#参考资料" class="headerlink" title="参考资料"></a>参考资料</h4><ol>
<li>周志华，机器学习，清华大学出版社，2016</li>
<li>李航，统计学习方法，清华大学出版社，2012</li>
</ol>

        </div>

        <blockquote class="post-copyright">
    
    <div class="content">
        
<span class="post-time">
    最后更新时间：<time datetime="2020-05-28T03:15:15.492Z" itemprop="dateUpdated">2020-05-28 11:15:15</time>
</span><br>


        
        原创不易，转载请注明出处哦~
        
    </div>
    
    <footer>
        <a href="https://richardyann.gitee.io">
            <img src="/img/avatar.jpg" alt="Richard Yann">
            Richard Yann
        </a>
    </footer>
</blockquote>

        
<div class="page-reward">
    <a id="rewardBtn" href="javascript:;" class="page-reward-btn waves-effect waves-circle waves-light">赏</a>
</div>



        <div class="post-footer">
            
	<ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/%E5%A4%A7%E6%95%B0%E6%8D%AE/" rel="tag">大数据</a></li><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/" rel="tag">数据分析</a></li><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/" rel="tag">机器学习</a></li><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/%E8%81%9A%E7%B1%BB/" rel="tag">聚类</a></li></ul>


            
<div class="page-share-wrap">
    

<div class="page-share" id="pageShare">
    <ul class="reset share-icons">
      <li>
        <a class="weibo share-sns" target="_blank" href="http://service.weibo.com/share/share.php?url=https://richardyann.gitee.io/2020/03/20/%E9%AB%98%E6%96%AF%E6%B7%B7%E5%90%88%E6%A8%A1%E5%9E%8BGMM%E8%81%9A%E7%B1%BB%E7%9A%84%E6%AD%A5%E9%AA%A4%E5%92%8C%E6%8E%A8%E5%AF%BC/&title=《高斯混合模型GMM聚类的步骤和推导》 — ATOM 阿瞳目&pic=https://richardyann.gitee.io/img/avatar.jpg" data-title="微博">
          <i class="icon icon-weibo"></i>
        </a>
      </li>
      <li>
        <a class="weixin share-sns wxFab" href="javascript:;" data-title="微信">
          <i class="icon icon-weixin"></i>
        </a>
      </li>
      <li>
        <a class="qq share-sns" target="_blank" href="http://connect.qq.com/widget/shareqq/index.html?url=https://richardyann.gitee.io/2020/03/20/%E9%AB%98%E6%96%AF%E6%B7%B7%E5%90%88%E6%A8%A1%E5%9E%8BGMM%E8%81%9A%E7%B1%BB%E7%9A%84%E6%AD%A5%E9%AA%A4%E5%92%8C%E6%8E%A8%E5%AF%BC/&title=《高斯混合模型GMM聚类的步骤和推导》 — ATOM 阿瞳目&source=欢迎光临~" data-title=" QQ">
          <i class="icon icon-qq"></i>
        </a>
      </li>
      <li>
        <a class="facebook share-sns" target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=https://richardyann.gitee.io/2020/03/20/%E9%AB%98%E6%96%AF%E6%B7%B7%E5%90%88%E6%A8%A1%E5%9E%8BGMM%E8%81%9A%E7%B1%BB%E7%9A%84%E6%AD%A5%E9%AA%A4%E5%92%8C%E6%8E%A8%E5%AF%BC/" data-title=" Facebook">
          <i class="icon icon-facebook"></i>
        </a>
      </li>
      <li>
        <a class="twitter share-sns" target="_blank" href="https://twitter.com/intent/tweet?text=《高斯混合模型GMM聚类的步骤和推导》 — ATOM 阿瞳目&url=https://richardyann.gitee.io/2020/03/20/%E9%AB%98%E6%96%AF%E6%B7%B7%E5%90%88%E6%A8%A1%E5%9E%8BGMM%E8%81%9A%E7%B1%BB%E7%9A%84%E6%AD%A5%E9%AA%A4%E5%92%8C%E6%8E%A8%E5%AF%BC/&via=https://richardyann.gitee.io" data-title=" Twitter">
          <i class="icon icon-twitter"></i>
        </a>
      </li>
      <li>
        <a class="google share-sns" target="_blank" href="https://plus.google.com/share?url=https://richardyann.gitee.io/2020/03/20/%E9%AB%98%E6%96%AF%E6%B7%B7%E5%90%88%E6%A8%A1%E5%9E%8BGMM%E8%81%9A%E7%B1%BB%E7%9A%84%E6%AD%A5%E9%AA%A4%E5%92%8C%E6%8E%A8%E5%AF%BC/" data-title=" Google+">
          <i class="icon icon-google-plus"></i>
        </a>
      </li>
    </ul>
 </div>



    <a href="javascript:;" id="shareFab" class="page-share-fab waves-effect waves-circle">
        <i class="icon icon-share-alt icon-lg"></i>
    </a>
</div>



        </div>
    </div>

    
<nav class="post-nav flex-row flex-justify-between">
  
    <div class="waves-block waves-effect prev">
      <a href="/2020/05/16/Chrome%E6%B5%8F%E8%A7%88%E5%99%A8%E9%BB%98%E8%AE%A4%E5%85%A8%E5%B1%8F%E5%90%AF%E5%8A%A8%EF%BC%88%E9%9D%9E-kiosk%E6%A8%A1%E5%BC%8F%EF%BC%89/" id="post-prev" class="post-nav-link">
        <div class="tips"><i class="icon icon-angle-left icon-lg icon-pr"></i> Prev</div>
        <h5 class="title">Chrome浏览器默认全屏启动（非--kiosk模式）</h5>
      </a>
    </div>
  

  
    <div class="waves-block waves-effect next">
      <a href="/2020/02/16/PCA%E9%99%8D%E7%BB%B4%E7%9A%84%E6%95%B0%E5%AD%A6%E7%90%86%E8%A7%A3%E4%B8%8E%E4%B8%BE%E4%BE%8B/" id="post-next" class="post-nav-link">
        <div class="tips">Next <i class="icon icon-angle-right icon-lg icon-pl"></i></div>
        <h5 class="title">PCA降维的数学理解与举例</h5>
      </a>
    </div>
  
</nav>



    











    <!-- Valine Comments -->
    <div class="comments vcomment" id="comments"></div>
    <script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script>
    <script src="//unpkg.com/valine@latest/dist/Valine.min.js"></script>
    <!-- Valine Comments script -->
    <script>
        var GUEST_INFO = ['nick','mail','link'];
        var guest_info = 'nick,mail,link'.split(',').filter(function(item){
          return GUEST_INFO.indexOf(item) > -1
        });
        new Valine({
            el: '#comments',
            notify: 'false' == 'true',
            verify: 'false' == 'true',
            appId: "M4yQMNFFRkn5MlX8nVut4Bns-gzGzoHsz",
            appKey: "2GXS36F9dMO6lib96qjPLtIr",
            avatar: "mm",
			visiter: "false",
            placeholder: "说点儿什么吗...",
            guest_info: guest_info.length == 0 ? GUEST_INFO : guest_info,
            pageSize: "10"
        })
    </script>
    <!-- Valine Comments end -->









</article>

<div id="reward" class="page-modal reward-lay">
    <a class="close" href="javascript:;"><i class="icon icon-close"></i></a>
    <h3 class="reward-title">
        <i class="icon icon-quote-left"></i>
        你这么好看，不会介意请我杯咖啡吧~
        <i class="icon icon-quote-right"></i>
    </h3>
    <div class="reward-content">
        
        <div class="reward-code">
            <img id="rewardCode" src="/img/wechat.jpg" alt="打赏二维码">
        </div>
        
        <label class="reward-toggle">
            <input id="rewardToggle" type="checkbox" class="reward-toggle-check"
                data-wechat="/img/wechat.jpg" data-alipay="/img/alipay.jpg">
            <div class="reward-toggle-ctrol">
                <span class="reward-toggle-item wechat">微信</span>
                <span class="reward-toggle-label"></span>
                <span class="reward-toggle-item alipay">支付宝</span>
            </div>
        </label>
        
    </div>
</div>



</div>

        <footer class="footer" style="position:fixed;bottom:0;width:100%">
<!--
    <div class="top">
        

        <p>
            
                <span><a href="/atom.xml" target="_blank" class="rss" title="rss"><i class="icon icon-lg icon-rss"></i></a></span>
            
            <span>博客内容遵循 <a rel="license noopener" href="https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh" target="_blank">知识共享 署名 - 非商业性 - 相同方式共享 4.0 国际协议</a></span>
        </p>
    </div>
-->
    <div class="bottom">
        <p><span>Richard Yann &copy; 2020 - 2021</span>
<!--
            <span>
                
                Power by <a href="http://hexo.io/" target="_blank">Hexo</a> Theme <a href="https://github.com/yscoder/hexo-theme-indigo" target="_blank">indigo</a>
            </span>
--!>
        </p>
    </div>
	
	<script src="/js/prism/prism.min.js?v=1.7.2" async></script>
</footer>

    </main>
    <div class="mask" id="mask"></div>
<a href="javascript:;" id="gotop" class="waves-effect waves-circle waves-light"><span class="icon icon-lg icon-chevron-up"></span></a>



<div class="global-share" id="globalShare">
    <ul class="reset share-icons">
      <li>
        <a class="weibo share-sns" target="_blank" href="http://service.weibo.com/share/share.php?url=https://richardyann.gitee.io/2020/03/20/%E9%AB%98%E6%96%AF%E6%B7%B7%E5%90%88%E6%A8%A1%E5%9E%8BGMM%E8%81%9A%E7%B1%BB%E7%9A%84%E6%AD%A5%E9%AA%A4%E5%92%8C%E6%8E%A8%E5%AF%BC/&title=《高斯混合模型GMM聚类的步骤和推导》 — ATOM 阿瞳目&pic=https://richardyann.gitee.io/img/avatar.jpg" data-title="微博">
          <i class="icon icon-weibo"></i>
        </a>
      </li>
      <li>
        <a class="weixin share-sns wxFab" href="javascript:;" data-title="微信">
          <i class="icon icon-weixin"></i>
        </a>
      </li>
      <li>
        <a class="qq share-sns" target="_blank" href="http://connect.qq.com/widget/shareqq/index.html?url=https://richardyann.gitee.io/2020/03/20/%E9%AB%98%E6%96%AF%E6%B7%B7%E5%90%88%E6%A8%A1%E5%9E%8BGMM%E8%81%9A%E7%B1%BB%E7%9A%84%E6%AD%A5%E9%AA%A4%E5%92%8C%E6%8E%A8%E5%AF%BC/&title=《高斯混合模型GMM聚类的步骤和推导》 — ATOM 阿瞳目&source=欢迎光临~" data-title=" QQ">
          <i class="icon icon-qq"></i>
        </a>
      </li>
      <li>
        <a class="facebook share-sns" target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=https://richardyann.gitee.io/2020/03/20/%E9%AB%98%E6%96%AF%E6%B7%B7%E5%90%88%E6%A8%A1%E5%9E%8BGMM%E8%81%9A%E7%B1%BB%E7%9A%84%E6%AD%A5%E9%AA%A4%E5%92%8C%E6%8E%A8%E5%AF%BC/" data-title=" Facebook">
          <i class="icon icon-facebook"></i>
        </a>
      </li>
      <li>
        <a class="twitter share-sns" target="_blank" href="https://twitter.com/intent/tweet?text=《高斯混合模型GMM聚类的步骤和推导》 — ATOM 阿瞳目&url=https://richardyann.gitee.io/2020/03/20/%E9%AB%98%E6%96%AF%E6%B7%B7%E5%90%88%E6%A8%A1%E5%9E%8BGMM%E8%81%9A%E7%B1%BB%E7%9A%84%E6%AD%A5%E9%AA%A4%E5%92%8C%E6%8E%A8%E5%AF%BC/&via=https://richardyann.gitee.io" data-title=" Twitter">
          <i class="icon icon-twitter"></i>
        </a>
      </li>
      <li>
        <a class="google share-sns" target="_blank" href="https://plus.google.com/share?url=https://richardyann.gitee.io/2020/03/20/%E9%AB%98%E6%96%AF%E6%B7%B7%E5%90%88%E6%A8%A1%E5%9E%8BGMM%E8%81%9A%E7%B1%BB%E7%9A%84%E6%AD%A5%E9%AA%A4%E5%92%8C%E6%8E%A8%E5%AF%BC/" data-title=" Google+">
          <i class="icon icon-google-plus"></i>
        </a>
      </li>
    </ul>
 </div>


<div class="page-modal wx-share" id="wxShare">
    <a class="close" href="javascript:;"><i class="icon icon-close"></i></a>
    <p>扫一扫，分享到微信</p>
    <img src="" alt="微信分享二维码">
</div>




    <script src="//cdn.bootcss.com/node-waves/0.7.4/waves.min.js"></script>
<script>
var BLOG = { ROOT: '/', SHARE: true, REWARD: true };


</script>

<script src="/js/main.min.js?v=1.7.2"></script>


<div class="search-panel" id="search-panel">
    <ul class="search-result" id="search-result"></ul>
</div>
<template id="search-tpl">
<li class="item">
    <a href="{path}" class="waves-block waves-effect">
        <div class="title ellipsis" title="{title}">{title}</div>
        <div class="flex-row flex-middle">
            <div class="tags ellipsis">
                {tags}
            </div>
            <time class="flex-col time">{date}</time>
        </div>
    </a>
</li>
</template>

<script src="/js/search.min.js?v=1.7.2" async></script>



<!-- mathjax config similar to math.stackexchange -->

<script type="text/x-mathjax-config">
MathJax.Hub.Config({
    tex2jax: {
        inlineMath: [ ['$','$'], ["\\(","\\)"]  ],
		displayMath: [ ['$$','$$'] ],
        processEscapes: true,
        skipTags: ['script', 'noscript', 'style', 'textarea', 'pre', 'code']
    }
});

MathJax.Hub.Queue(function() {
    var all = MathJax.Hub.getAllJax(), i;
    for(i=0; i < all.length; i += 1) {
        all[i].SourceElement().parentNode.className += ' has-jax';
    }
});
</script>

<script async src="//cdn.bootcss.com/mathjax/2.7.0/MathJax.js?config=TeX-MML-AM_CHTML" async></script>






<script>
(function() {
    var OriginTitile = document.title, titleTime;
    document.addEventListener('visibilitychange', function() {
        if (document.hidden) {
            document.title = '别走~待会儿~嘛去~';
            clearTimeout(titleTime);
        } else {
            document.title = 'Welcome to ATOM！';
            titleTime = setTimeout(function() {
                document.title = OriginTitile;
            },2000);
        }
    });
})();
</script>



</body>
<script type="text/javascript" src="//js.mfpad.com/mfsapi.js"></script>
</html>
